package com.xunfang.controller;

import com.xunfang.bean.User;
import com.xunfang.bean.dto.LoginUserDTO;
import com.xunfang.common.Result;
import com.xunfang.service.IUserService;
import com.xunfang.utils.JwtTemplate;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
 * @author yellow Docter
 * @date 2023 -10-25
 * @desc
 */
@RestController
@RequestMapping("user")
@Api(tags = "用户模块...")
public class UserController {

    @Autowired
    private IUserService userService;

    @Autowired
    private JwtTemplate jwtTemplate;

    @ApiOperation("登录接口")
    @PostMapping ("/login")
    public Result loginUserByIdPassword(@RequestBody LoginUserDTO user){

        User loginUser = userService.login(user);

        if (Objects.nonNull(loginUser)){

            //不为null
            //返回一个token
            Map<String,Object> playLoad = new HashMap<>();

            playLoad.put("userId",loginUser.getId());
            playLoad.put("username",loginUser.getUsername());

            String token = jwtTemplate.createToken(playLoad);
            //登录成功后 返回token
            return Result.ok("登录成功...",token);

        }
        //判断是否为null  loginUser
        return  Result.fail("登录失败...");
    }

    // 这个接口是否登录可以访问 ?
    //没有登录 不让问访问
    //01  登录存储用户信息
    //02  访问接口的时候判断 是否登录

    @ApiOperation("test登录1")    //可以直接访问
    @GetMapping("/testLogin1")
    public Result testLogin1(){
        //校验的方法
        return Result.ok("访问成功");
    }

    @ApiOperation("test登录2")  //需要有token 才可以范围
    @GetMapping("/testLogin2")
    public Result testLogin2(){

        String token = "xxx.yyy.zzz";
        //校验的方法
        return  Result.ok("访问成功");
    }
}
